package com.cool.shark.ex.handel;

import com.cool.shark.ex.ServiceException;
import com.cool.shark.web.JsonResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * @Name: GlobalExceptionHandle
 * @Author: 西风残叶
 * @Date: 2024/3/29 21:35
 * @Version: 1.0
 * @TODO: TODO
 */
@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandle {
    public GlobalExceptionHandle(){
        log.info("加载全局异常处理类:GlobalExceptionHandle");
    }

    /**
     * 处理服务异常的方法。
     * 当程序运行过程中出现ServiceException时，会统一进行处理，并返回相应的错误结果。
     *
     * @param e ServiceException 异常对象，包含具体的异常信息。
     * @return JsonResult 返回一个表示操作失败的JsonResult对象，其中包含了异常信息。
     */
    @ExceptionHandler
    public JsonResult<Void> handleServiceException(ServiceException e){
        log.warn("程序运行过程中出现ServiceException,将统一处理");
        log.warn("异常信息:{}", e.getMessage());
        return JsonResult.fail(e);
    }
}
